﻿// ==PREPROCESSOR==
// @name "DarkOne4Mod - Control Panel - Right"
// @version "1.1 build20161024"
// @author "tedGo, based on a sample created by T.P. Wang, using partial code by Br3tt and super-gau"
// @import "%fb2k_profile_path%cui-configs\darkone4mod\jscript\js\Global Config Script.js"
// @import "%fb2k_profile_path%cui-configs\darkone4mod\jscript\js\Global Button Script.js"
// @import "%fb2k_profile_path%cui-configs\darkone4mod\jscript\js\TextButton Object.js"
// @import "%fb2k_profile_path%cui-configs\darkone4mod\jscript\js\Volumeknob Object.js"
// @import "%fb2k_profile_path%cui-configs\darkone4mod\jscript\js\getButtonProperties.js"
// @import "%fb2k_profile_path%cui-configs\darkone4mod\jscript\js\getOpenMenu.js"
// @import "%fb2k_profile_path%cui-configs\darkone4mod\jscript\js\getPBOMenu.js"
// ==/PREPROCESSOR==

var p_backcol = RGBA(31, 31, 31, 255);
var bxf, by1, by2, bbw, bbh, rbp = 0;

// ----- CREATE BUTTONS -----
btnOptions.font_name = "Arial Black";
btnOptions.text_h_align = 1;
btnOptions.btn_style = 1;
btnOptions.line_width = 1;

btnColours.text_normal = ui_btntxtcol;
btnColours.line_normal = RGBA(0, 0, 0, 255);
btnColours.back_hover = RGBA(255, 255, 255, 16);
btnColours.back_down = RGBA(255, 255, 255, 8);

var a_name = ["", "", "", "", "", "", "", "STOP A. C.", "PB. ORDER"];
var a_func = [getOpenMenu, function(){fb.Prev()}, function(){fb.Pause()}, function(){fb.Play()}, function(){fb.Stop(); fb.RunMainMenuCommand("ELPlaylist/Redraw")}, function(){fb.Next()}, function(){fb.Random()}, function(){fb.RunMainMenuCommand("Playback/Stop After Current")}, getPBOMenu];
for (var i_ = 0; i_ >= 0 && i_ <= 8; i_++) Buttons["a_" + i_] = new TextButton(a_name[i_], a_func[i_], btnOptions, btnColours);

var b_name = ["BUTTON 01", "BUTTON 02", "BUTTON 03", "BUTTON 04", "BUTTON 05", "BUTTON 06", "BUTTON 07", "BUTTON 08", "BUTTON 09", "BUTTON 10"];
var b_btns = [];
for (var j_ in b_name) b_btns.push(getButtonProperties(b_name[j_], b_name[j_] + " name (up to 10 letters)", b_name[j_], b_name[j_] + " context menu command?", b_name[j_] + " command string"));
for (var k_ in b_btns) if (b_btns[k_].Exists) Buttons["b_" + k_] = new TextButton(b_btns[k_].Text, AddBtnCmd, btnOptions, btnColours, "", b_btns[k_]);

vknobOptions.line_width = btnOptions.line_width;
vknobOptions.line_normal = btnColours.line_normal;
vknobOptions.back_hover = btnColours.back_hover;

volknob = new VolumeKnob(vknobOptions);

// ----- DRAW -----
function on_paint(gr) {
	!window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, p_backcol);

	gr.SetInterpolationMode(7);
	gr.SetSmoothingMode(4);

	g_signs && gr.DrawImage(g_signs, 0, 0, ww, bbh, 0, 396, 1200, 72);

	gr.GdiDrawText("VOLUME", gdi.Font(btnOptions.font_name, btnSizeOpt.font_size), btnColours.text_normal, Math.floor(ww - ww / 8), by1, bbw, Math.ceil(bbh / 3 * 2), 1);
	buttonsDraw(gr);
	volknob.draw(gr);
}

// ----- MOUSE ACTIONS -----
function on_mouse_move(x, y){
	buttonsMouseMove(x, y);
	volknob.on_mouse_move(x, y);
}

function on_mouse_lbtn_down(x, y){
	buttonsMouseLbtnDown(x, y);
	volknob.on_mouse_lbtn_down(x, y);
}

function on_mouse_lbtn_up(x, y){
	buttonsMouseLbtnUp(x, y);
	volknob.on_mouse_lbtn_up(x, y);
}

function on_mouse_wheel(step){
	volknob.on_mouse_wheel(step);
}

function on_mouse_rbtn_up(x, y) {
	if (volknob.traceMouse(x, y)) volknob.on_mouse_rbtn_up(x, y);
	else {
		var a = window.CreatePopupMenu();
		var idx;

		a.AppendMenuItem(0, 1, "Manage optional buttons");
		a.AppendMenuItem(0, 2, "Configure...");

		idx = a.TrackPopupMenu(x, y);
		idx == 1 && window.ShowProperties();
		idx == 2 && window.ShowConfigure();

		a.Dispose();
	}
	return true;
}

function on_mouse_leave() {
	buttonsMouseLeave();
}

// ----- EVENTS -----
function on_size() {
	ww = window.Width;
	wh = window.Height;
	bxf = ww / 16;
	bbw = Math.floor(ww / 8);
	bbh = Math.floor(bbw / 25 * 12);
	by1 = Math.floor(ww / 80 * 7) - 1;
	by2 = wh - bbh - 1;
	rbp = ww / 8 + 1;

	btnSizeOpt.font_size = ww * 7 / 400;
	btnSizeOpt.func_top_pad = Math.ceil(bbh / 3 * 2);

	var qx = [0, bxf * 3, bxf * 5, bxf * 7, bxf * 9, bxf * 11, ww - rbp];
	for (var i = 0; i >= 0 && i <= 6; i++) Buttons["a_" + i].initPos(qx[i], 0, bbw, bbh);

	Buttons.a_7.initPos(0, by1, bbw, bbh, btnSizeOpt);
	Buttons.a_8.initPos(0, by2, bbw, bbh, btnSizeOpt);

	for (var j = 0; j >= 0 && j <= 4; j++) {
		b_btns[j].Exists && Buttons["b_" + j].initPos(bxf * (j * 2 + 3), by1, bbw, bbh, btnSizeOpt);
		b_btns[j + 5].Exists && Buttons["b_" + (j + 5)].initPos(bxf * ((j + 5) * 2 - 7), by2, bbw, bbh, btnSizeOpt);
	}

	volknob.initPos(ww - rbp, wh - rbp, bbw, bbw);
}